Bug 551378 - Print dialog: should try UDS when fetching PPD for localhost
authorMarek Kasik <mkasik@redhat.com>
Thu, 11 Sep 2008 08:47:56 +0000 (08:47 +0000)
committerMarek Kašík <mkasik@src.gnome.org>
Thu, 11 Sep 2008 08:47:56 +0000 (08:47 +0000)
2008-09-11  Marek Kasik  <mkasik@redhat.com>

Bug 551378 - Print dialog: should try UDS when fetching PPD for
localhost

* modules/printbackends/cups/gtkprintbackendcups.c: Add ability
to get PPD file from CUPS through Unix domain socket

svn path=/trunk/; revision=21345

ChangeLog
modules/printbackends/cups/gtkprintbackendcups.c

index a5eee8c69d549719af6887c387f29f2239e2c580..45587fda7cad16d2243086d405f9ca2853c7603c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-09-11  Marek Kasik  <mkasik@redhat.com>
+
+       Bug 551378 - Print dialog: should try UDS when fetching PPD for
+       localhost
+
+       * modules/printbackends/cups/gtkprintbackendcups.c: Add ability
+       to get PPD file from CUPS through Unix domain socket
+
 2008-09-11  Christian Dywan  <christian@imendio.com>
 
        Bug 551567 – DND mark broken
index fab45aa9626925544674fb3656a47b93053e47c2..4fe6748a3c6204582ed573bf3a6faf12f21d7dfb 100644 (file)
@@ -1272,6 +1272,7 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
          char hostname[HTTP_MAX_URI];  /* Hostname */
          char resource[HTTP_MAX_URI];  /* Resource name */
          int  port;                    /* Port number */
+         char *cups_server;            /* CUPS server */
          
           list_has_changed = TRUE;
          cups_printer = gtk_printer_cups_new (printer_name, backend);
@@ -1318,9 +1319,20 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend,
             }
 
          gethostname (uri, sizeof (uri));
+         cups_server = g_strdup (cupsServer());
+
          if (strcasecmp (uri, hostname) == 0)
            strcpy (hostname, "localhost");
 
+          /* if the cups server is local and listening at a unix domain socket 
+           * then use the socket connection
+           */
+         if ((strstr (hostname, "localhost") != NULL) &&
+             (cups_server[0] == '/'))
+           strcpy (hostname, cups_server);
+
+         g_free (cups_server);
+
          cups_printer->hostname = g_strdup (hostname);
          cups_printer->port = port;